{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "227e2ab8-4631-413f-92ba-bec21603ed51",
   "metadata": {},
   "outputs": [],
   "source": [
    "import cantera as ct\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from IPython.display import Video\n",
    "from IPython.display import HTML"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ae671cb8-78be-427f-8235-f563dd0acce2",
   "metadata": {},
   "source": [
    "# Cantera tutorial with Python\n",
    "\n",
    "Some useful links:\n",
    "* https://cantera.org/tutorials/python-tutorial.html\n",
    "* https://cantera.org/examples/python/index.html#python-example-onedim\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "d72b1a87-cc09-41e2-be5e-217afc400dc2",
   "metadata": {},
   "outputs": [],
   "source": [
    "gas = ct.Solution('gri30.yaml')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "8307d2a8-76ce-436d-9aef-7bd917ca61cf",
   "metadata": {},
   "outputs": [],
   "source": [
    "    fuel = {'CH4': 1}\n",
    "    oxidizer = {'O2': 1, 'N2': 3.76}\n",
    "\n",
    "    gas.TP = 293, 101325\n",
    "\n",
    "    gas.set_equivalence_ratio(0.8, fuel, oxidizer)  # hold temperature and pressure constant"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cc0b9529-bb7e-4ee4-81bb-1c631f2ad1a3",
   "metadata": {},
   "source": [
    "## Free Flame computation\n",
    "<center><img src=\"../img/freeflame.png\"/></center>\n",
    "\n",
    "$\\rho$ : density\\\n",
    "$S$: Flow speed\\\n",
    "$T$: Temperature (K)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "62094ef2-f32c-4616-889c-b33ef0c38a3e",
   "metadata": {},
   "outputs": [],
   "source": [
    "    # 1D freely propagating flame\n",
    "    #       Domain width in meters\n",
    "    width = 0.1\n",
    "    #       Create the flame object\n",
    "    flame = ct.FreeFlame(gas, width=width)\n",
    "    #       Transport model\n",
    "    flame.transport_model = 'mixture-averaged'\n",
    "    #       Energy equation\n",
    "    flame.energy_enabled = True\n",
    "    #       Soret effect (only with multi component transport model)\n",
    "    flame.soret_enabled = False\n",
    "    #       Define tolerances for the solver\n",
    "    flame.set_refine_criteria(ratio=2, slope=0.6 , curve=0.1)\n",
    "    #       Define logging level\n",
    "    loglevel = 0\n",
    "    #   Solving the flame\n",
    "    flame.solve(loglevel=loglevel, auto=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "f2f3f694-b9d6-4bfc-b276-299fae3bec1f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAHFCAYAAAAaD0bAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABPwElEQVR4nO3deVxU9f4/8NeZYRZAQDYRERE0EVwRU9GoNJXUTLuVFIWZlnnzft3aNDWXUq/Vr6uZS7lktiCZmebFBbNSkxYVrKtkmgumkIoiKLLMzOf3xzAj4wAyMMMMM6/n4zEP4MyZM+9zZHn52Y4khBAgIiIiciEyexdARERE1NAYgIiIiMjlMAARERGRy2EAIiIiIpfDAEREREQuhwGIiIiIXA4DEBEREbkcBiAiIiJyOQxARERE5HIYgIhuUVRUhJdffhkDBw5EYGAgJEnC7Nmzq9z33nvvhSRJkCQJMpkMXl5eaNu2LR599FF88cUX0Ol0tX7fGTNmoFWrVnBzc0PTpk2Nx7/33nvrf1INrLi4GLNnz8Z3331n71Ic0vz58/HVV1/ZuwyHsGTJErRt2xZKpRKSJKGgoACjRo1C69atTfZr3bo1Ro0aZZcayTkxABHdIj8/Hx988AFKS0sxfPjw2+4fERGBjIwM7N+/H1999RWmTp2KGzdu4NFHH8W9996Lq1ev3vYYmzdvxrx58zBy5Eh8//332LVrlxXOxH6Ki4sxZ84cBqBqMADpZWVlYcKECejbty92796NjIwMeHl5YebMmdi0aZO9yyMn52bvAogcTVhYGK5cuQJJknDp0iWsWrWqxv3d3d3Rq1cvk23PPPMMPvzwQ4wePRpjx45Fampqjcf43//+BwCYMGECmjVrVr8ToAal1Wqh0WigUqnsXQpu3LgBd3d3u71/eXk5JEmCm1vt/rQcOXIEAPDss8+iR48exu1t2rSxSX1ElbEFiOgWhi6t+nr66acxePBgbNiwAWfOnKl2v9atW2PGjBkAgKCgoBq73ABgzpw56NmzJ/z8/ODt7Y1u3bph9erVuPW+xq1bt8YDDzyArVu3IiYmBu7u7oiKisLWrVsBAGvXrkVUVBQ8PT3Ro0cPHDhwwOy9Dhw4gAcffBB+fn5Qq9WIiYnB559/XuN5nz59GoGBgcZaDdezcvfF8ePHkZSUhGbNmkGlUiEqKgpLly41Oc53330HSZLw2Wef4ZVXXkFwcDCaNGmCoUOH4u+//0ZRURHGjh2LgIAABAQE4Omnn8a1a9dMjiFJEv71r3/h/fffR7t27aBSqRAdHY3169eb1Z2Xl4fnnnsOLVu2hFKpRHh4OObMmQONRmNybpIk4c0338Qbb7yB8PBwqFQqfPvttygpKcELL7yArl27wsfHB35+foiLi8PmzZvNarp+/To++ugj47UxdHPOnj27yu+9tWvXQpIknD592rjN8O/75ZdfIiYmBmq1GnPmzKn1uVTHcNxNmzahc+fOUKvViIiIwLvvvlvlv8/HH3+MF154ASEhIVCpVDhx4gQAYM2aNejSpQvUajX8/Pzw0EMPITs72/j6e++9F08++SQAoGfPnibfI1V1gVWlsLAQL774IsLDw6FUKhESEoJJkybh+vXrt30tEQQRVevixYsCgJg1a1aVz99zzz2iQ4cO1b5+xYoVAoD4+OOPq93n0KFDYsyYMQKA2L59u8jIyBBnz541Hv+ee+4x2X/UqFFi9erVIj09XaSnp4vXX39duLu7izlz5pjsFxYWJlq2bCk6duwoUlJSRFpamujZs6dQKBTitddeE3369BFffvml2LRpk2jXrp0ICgoSxcXFxtfv3r1bKJVKER8fL1JTU8X27dvFqFGjBADx4YcfVns+JSUlYvv27QKAGDNmjMjIyBAZGRnixIkTQgghjhw5Inx8fESnTp3EunXrxM6dO8ULL7wgZDKZmD17tvE43377rQAgwsLCxKhRo8T27dvFihUrRJMmTUTfvn3FgAEDxIsvvih27twpFi5cKORyufi///s/k1oAiNDQUBEdHS1SUlLEli1bxP333y8AiA0bNhj3y83NFaGhoSIsLEy8//77YteuXeL1118XKpVKjBo1yrjfqVOnBAAREhIi+vbtK7744guxc+dOcerUKVFQUCBGjRolPv74Y7F7926xfft28eKLLwqZTCY++ugj4zEyMjKEu7u7GDx4sPHaHDlyRAghxKxZs0RVv5Y//PBDAUCcOnXK5N83ODhYREREiDVr1ohvv/1W/Pzzz7U+l+qEhYWJkJAQ0apVK7FmzRqRlpYmnnjiCQFAvPXWW2b/PiEhIeKRRx4RW7ZsEVu3bhX5+fli/vz5AoB4/PHHxX//+1+xbt06ERERIXx8fMQff/xh/D6YMWOG8fup8vfIU089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EJGTM9wMlWOAiIhuYgAicnLyip9yzgIjIrqJAYjIybEFiIjIHAMQkZO7OQaIAYiIyIABiMjJcR0gIiJzDEBETs54LzDOAiMiMmIAInJycnaBERGZYQAicnIcA0REZI4BiMjJcRYYEZE5BiAiJ8cWICIicwxARE7OOAtMywBERGTAAETk5DgImojIHAMQkZO7uQ4Qp8ETERkwABE5OZmkD0BsACIiuokBiMjJGW6GqhNMQEREBgxARE7uZgsQAxARkQEDEJGTMwQgLYcAEREZMQAROTnDIGjBFiAiIiMGICInV9EAxGnwRESVMAAROTm5oQuMLUBEREYMQEROTmbsArNzIUREDoQBiMjJ3RwEzQRERGTAAETk5CoagDgNnoioEgYgIidnmAWmYwsQEZERAxCRk+OtMIiIzDEAETk5GWeBERGZYQAicnLsAiMiMscAROTkOAiaiMgcAxCRkzOsA8Rp8ERENzEAETk5wxggNgAREd3EAETk5HgrDCIicwxARE5OVvFTzi4wIqKbGICInBy7wIiIzDEAETk5wzR4doEREd3EAETk5CROgyciMsMAROTk5JW6wARDEBERAAYgIqdnGAME8H5gREQGDEBETs6wECLAmWBERAYMQEROTi6r3ALEAEREBDAAETm9SvmHAYiIqAIDEJGTqzwGiF1gRER6DEBETo6DoImIzDEAETk5kzFATEBERAAYgIicXuUxQFwNmohIjwGIyMlJksTVoImIbsEAROQCDOOAdDo7F0JE5CAYgIhcgOF2GGwBIiLSYwAicgGyip90ToMnItJjACJyAbJKN0QlIiIGICKXYOgC4ywwIiI9BiAiF2CYBcYuMCIiPQYgIhdgWAxRsAWIiAgAAxCRS5CxC4yIyAQDEJELkMm4DhARUWUMQEQugOsAERGZYgAicgEyDoImIjLBAETkAoxdYGwBIiIC4AABaNmyZQgPD4darUZsbCz27t1b7b65ublISkpCZGQkZDIZJk2aZLbP2rVrK27+aPooKSmx4VkQOTYZu8CIiEzYNQClpqZi0qRJmD59OjIzMxEfH49BgwYhJyenyv1LS0sRGBiI6dOno0uXLtUe19vbG7m5uSYPtVptq9MgcnhyYwuQnQshInIQdg1A77zzDsaMGYNnnnkGUVFRWLRoEUJDQ7F8+fIq92/dujUWL16MkSNHwsfHp9rj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eOeddzB79mw88MAD8PX1xU8//YRx48Zh3LhxOHv2rMnrevTogb179972fYmo4TEAEZFdnThxAkIIREZGmmwPCAhAkyZN0KRJE7zyyismzyUlJWH06NGIiIhAWFiY2TEXL16MhIQETJ06Fe3atcOECROQkJBQYx0FBQUoKChAixYtzJ7z8/PDu+++i8jISIwePRqRkZEoLi7Gq6++ijvuuAPTpk2DUqnEDz/8YPK6kJAQnD59upZXgogaEgMQETmEW1t5fv75Z2RlZaFDhw4oLS01ea6qVprKsrOzERcXZ7Lt1q9vdePGDQCAWq02e65Dhw6QyW7+ugwKCkKnTp2MX8vlcvj7++PChQsmr3N3d7/tAG4isg8OgiYiu2rbti0kScLvv/9usj0iIgKAPkTcqrquMgMhhMV1+Pv7Q5IkXLlyxew5hUJh8rUkSVVu0+l0JtsuX76MwMBAi2shIttjCxAR2ZW/vz8GDBiA9957D9evX7fKMaOjo/Hjjz+abLv161splUpER0fj6NGjVqkBAP73v/8hJibGascjIuthACIiu1u2bBk0Gg26d++O1NRUZGdn49ixY/jkk0/w+++/Qy6XW3S8CRMmYPv27XjzzTfxxx9/4L333sP27dtv+7qEhATs27evrqdhori4GAcPHqz3oopEZBsMQERkd23atEFmZib69++PadOmoUuXLujevTuWLFmCF198Ea+//rpFx+vVqxdWrVqFJUuWoGvXrti5cydmzJhx29c9++yzSEtLw9WrV+t6KkabN29Gq1atrLKmEBFZnyTq0llOROSkRowYgZiYGEybNq1ex+nRowcmTZqEpKQkK1VGRNbEFiAiokreeustNGnSpF7HuHDhAh555BE8/vjjVqqKiKyNLUBERETkctgCRERERC6HAYiIiIhcDgMQERERuRwGICIiInI5DEBERETkchiAiIiIyOUwABEREZHLYQAiIiIil8MARERERC7n/wMf9KCMixLLXAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()\n",
    "plt.plot(flame.grid,flame.Y[3],label='O2')\n",
    "plt.plot(flame.grid, flame.Y[15],label='CH4')\n",
    "plt.legend()\n",
    "plt.ylabel('Temperature (K)')\n",
    "plt.xlabel('Grid (m)')\n",
    "plt.title('1D flame temperature profile')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "99fd38d0-e725-42da-9b1c-8fe9a7f67a74",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
